﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;

namespace GamePlugin.Logics
{
    public static class Helper
    {
        public static MainWindow GetMainWindow()
        {
            return (Application.Current.MainWindow as MainWindow);
        }

        private static Dictionary<string, List<string>> _record = new Dictionary<string, List<string>>();
        private static bool _init = false;

        private static void Add(string kind, string name)
        {
            if (_record.ContainsKey(kind) == false)
            {
                _record.Add(kind, new List<string>());
            }
            _record[kind].Add(name);
        }

        private static void Initialize()
        {
            if (_init == true)
                return;
            _init = true;

            for (int i = 0; i < 50; i++)
                Add("默认", "属性" + i.ToString());

            Add("职业", "巫医");
            Add("职业", "武僧");
            Add("职业", "狩魔猎人");
            Add("职业", "秘术师");
            Add("职业", "野蛮人");

            Add("装备类型", "单手");
            Add("装备类型", "双手");
            Add("装备类型", "防具");
            Add("装备类型", "副手");
            Add("装备类型", "追随者");

            Add("物品稀有度", "全部");
            Add("物品稀有度", "此等");
            Add("物品稀有度", "普通");
            Add("物品稀有度", "高级");
            Add("物品稀有度", "魔法");
            Add("物品稀有度", "稀有");
            Add("物品稀有度", "传奇");

            Add("单手物品类型", "所有武器类型");
            Add("单手物品类型", "斧");
            Add("单手物品类型", "祭祀刀");
            Add("单手物品类型", "弩枪");
            Add("单手物品类型", "匕首");
            Add("单手物品类型", "拳套武器");
            Add("单手物品类型", "钉锤");
            Add("单手物品类型", "重型武器");
            Add("单手物品类型", "茅");
            Add("单手物品类型", "剑");
            Add("单手物品类型", "魔杖");

            Add("双手物品类型", "所有武器类型");
            Add("双手物品类型", "双手斧");
            Add("双手物品类型", "弓");
            Add("双手物品类型", "武杖");
            Add("双手物品类型", "弩");
            Add("双手物品类型", "双手钉锤");
            Add("双手物品类型", "双手重型武器");
            Add("双手物品类型", "长柄武器");
            Add("双手物品类型", "法杖");
            Add("双手物品类型", "双手剑");

            Add("副手物品类型", "全部物品");
            Add("副手物品类型", "咒物");
            Add("副手物品类型", "法器");
            Add("副手物品类型", "箭筒");
            Add("副手物品类型", "盾");

            Add("防具物品类型", "全副防御类型");
            Add("防具物品类型", "护身符");
            Add("防具物品类型", "腰带");
            Add("防具物品类型", "靴子");
            Add("防具物品类型", "护腕");
            Add("防具物品类型", "胸甲");
            Add("防具物品类型", "斗篷");
            Add("防具物品类型", "手套");
            Add("防具物品类型", "头盔");
            Add("防具物品类型", "裤子");
            Add("防具物品类型", "重型腰带");
            Add("防具物品类型", "戒指");
            Add("防具物品类型", "护肩");
            Add("防具物品类型", "炼气石");
            Add("防具物品类型", "巫毒面具");
            Add("防具物品类型", "秘术帽");

            Add("追随者物品类型", "无");
        }

        public static void FillCombox(string kind, ComboBox box)
        {
            Initialize();
            if (_record.ContainsKey(kind) == false)
            {
                kind = "默认";
            }
            box.Items.Clear();

            for (int i = 0; i < _record[kind].Count; i++)
                box.Items.Add(_record[kind][i]);

            box.SelectedIndex = 0;
        }

        public static int GetIndex(string kind, string name)
        {
            Initialize();
            return _record[kind].IndexOf(name);
        }

        public static string GetName(string kind, int index)
        {
            Initialize();
            if (_record.ContainsKey(kind) == false)
                return "默认";
            return _record[kind][index];
        }

        public static List<string> GetList(string kind)
        {
            Initialize();
            return _record[kind];
        }
    }
}
